home *** CD-ROM | disk | FTP | other *** search
/ Risc World 3 / Risc World 3.iso / SOFTWARE / ISSUE2 / PD / VINCE / !ViNCe / c / rre8 < prev    next >
Text File  |  2002-03-10  |  2KB  |  64 lines

  1. /*
  2.  *  Copyright (C) 1999 AT&T Laboratories Cambridge.  All Rights Reserved.
  3.  *
  4.  *  This is free software; you can redistribute it and/or modify
  5.  *  it under the terms of the GNU General Public License as published by
  6.  *  the Free Software Foundation; either version 2 of the License, or
  7.  *  (at your option) any later version.
  8.  *
  9.  *  This software is distributed in the hope that it will be useful,
  10.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *  GNU General Public License for more details.
  13.  *
  14.  *  You should have received a copy of the GNU General Public License
  15.  *  along with this software; if not, write to the Free Software
  16.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
  17.  *  USA.
  18.  */
  19.  
  20. /*
  21.  * rre.c - handle RRE encoding.
  22.  *
  23.  * This file shouldn't be compiled directly.  It is included multiple times by
  24.  * rfbproto.c, each time with a different definition of the macro BPP.  For
  25.  * each value of BPP, this file defines a function which handles an RRE
  26.  * encoded rectangle with BPP bits per pixel.
  27.  */
  28.  
  29. static Bool HandleRRE8(int rx, int ry, int rw, int rh) {
  30.   rfbRREHeader hdr;
  31.   int i;
  32.   CARD8 pix;
  33.   rfbRectangle subrect;
  34.  
  35.   fprintf(stderr, "RRE\n");
  36.   if (!ReadFromRFBServer((char *)&hdr, sz_rfbRREHeader))
  37.     return False;
  38.  
  39.   hdr.nSubrects = Swap32IfLE(hdr.nSubrects);
  40.  
  41.   if (!ReadFromRFBServer((char *)&pix, sizeof(pix)))
  42.     return False;
  43.  
  44.   display_fillrectangle(rx, ry, rw, rh, pix);
  45.  
  46.   for (i = 0; i < hdr.nSubrects; i++) {
  47.     if (!ReadFromRFBServer((char *)&pix, sizeof(pix)))
  48.       return False;
  49.  
  50.     if (!ReadFromRFBServer((char *)&subrect, sz_rfbRectangle))
  51.       return False;
  52.  
  53.     subrect.x = Swap16IfLE(subrect.x);
  54.     subrect.y = Swap16IfLE(subrect.y);
  55.     subrect.w = Swap16IfLE(subrect.w);
  56.     subrect.h = Swap16IfLE(subrect.h);
  57.  
  58.     display_fillrectangle(rx + subrect.x, ry + subrect.y,
  59.                           subrect.w, subrect.h, rgb332_rgb555_table[pix]);
  60.   }
  61.  
  62.   return True;
  63. }
  64.